using System;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using SystemFrameworks;
using Microsoft.ApplicationBlocks.Data;
using Common; using MinCultura.Sipa.DataAccess.EntidadesArtes;
using SystemFrameworks;

namespace MinCultura.Sipa.EntidadesArtes
{
	/// <summary>
	/// Clase de acceso a datos para la entidad ART_ENTIDAD_UBICACION
	/// </summary>
	public class EntidadUbicacion 
	{
		#region Private Data Access Atributes

		private const String ENT_ID_PARAM = "@ENT_ID";
		private const String ZOP_ID_PARAM = "@ZOP_ID";
		private const String ZON_ID_PARAM = "@ZON_ID";
		private const String ENT_DIRECCION_PARAM = "@ENT_DIRECCION";
		private const String ENT_DIRECCION_CORRESPONDENCIA_PARAM = "@ENT_DIRECCION_CORRESPONDENCIA";
		private const String ENT_SINO_TELEFONO_PARAM = "@ENT_SINO_TELEFONO";
		private const String ENT_TELEFONO_PARAM = "@ENT_TELEFONO";
		private const String ENT_SINO_FAX_PARAM = "@ENT_SINO_FAX";
		private const String ENT_FAX_PARAM = "@ENT_FAX";
		private const String ENT_APARTADO_AEREO_PARAM = "@ENT_APARTADO_AEREO";
		private const String ENT_SINO_CORREO_ELECTRONICO_ENTIDAD_PARAM = "@ENT_SINO_CORREO_ELECTRONICO_ENTIDAD";
		private const String ENT_CORREO_ELECTRONICO_ENTIDAD_PARAM = "@ENT_CORREO_ELECTRONICO_ENTIDAD";
		private const String ENT_PAGINA_WEB_PARAM = "@ENT_PAGINA_WEB";
		private const String ENT_CIUDAD_PARAM = "@ENT_CIUDAD";

		#endregion Private Data Access Atributes

		/// <summary>
		/// Constructor de la clase ARTENTIDADUBICACION
		/// </summary>
        public EntidadUbicacion(string strCadenaConecxion)
        {
            ConnectionString = strCadenaConecxion;
        }
        #region ConnectionString

        private string _cadenaConexion;

        public string ConnectionString
        {
            get { return _cadenaConexion; }
            set { _cadenaConexion = value; }
        }

        #endregion


		public DataTable BuscarAreas()
		{
			DataTable response = new DataTable();
			SqlHelper.ExecuteDataTable(this.ConnectionString, CommandType.StoredProcedure, "PAS_BUSCAR_ART_TIPO_AREA", response);
			if (response.Rows.Count == 0)
				return null;
			return response;

		}

		public EntidadUbicacionData BuscarEntidadUbicacion()
		{
			EntidadUbicacionData response = new EntidadUbicacionData();
			SqlHelper.ExecuteDataTable(this.ConnectionString, CommandType.StoredProcedure, "PAS_BUSCAR_ART_ENTIDAD_UBICACION", response);
			if (response.Rows.Count == 0)
				return null;
			return response;

		}


		public EntidadUbicacionData ConsultarEntidadUbicacion(decimal parENT_ID)
		{
			EntidadUbicacionData response = new EntidadUbicacionData();

			SqlParameter param1 = new SqlParameter(ENT_ID_PARAM, parENT_ID);

			SqlParameter[] parameters = {param1};
			SqlHelper.ExecuteDataTable(this.ConnectionString, CommandType.StoredProcedure, "PAS_CONSULTAR_ART_ENTIDAD_UBICACION", response, parameters);
			if (response.Rows.Count == 0)
				return null;
			return response;

		}

		public void AdicionarEntidadUbicacion(EntidadUbicacionData datos, params SqlTransaction[] transaccion)
		{
			try
			{
				foreach (DataRow row in datos.Rows)
				{
					SqlParameter param1 = new SqlParameter(ENT_ID_PARAM, row[EntidadUbicacionData.ENT_ID_FIELD]);
					SqlParameter param2 = new SqlParameter(ZOP_ID_PARAM, row[EntidadUbicacionData.ZOP_ID_FIELD]);
					SqlParameter param3 = new SqlParameter(ZON_ID_PARAM, row[EntidadUbicacionData.ZON_ID_FIELD]);
					//if(param3.Value == System.DBNull.Value)
					//	param3.Value = "11001";
					SqlParameter param4 = new SqlParameter("@ARE_ID", row[EntidadUbicacionData.ARE_ID_FIELD]);
					SqlParameter param5 = new SqlParameter(ENT_DIRECCION_PARAM, row[EntidadUbicacionData.ENT_DIRECCION_FIELD]);
					SqlParameter param6 = new SqlParameter(ENT_DIRECCION_CORRESPONDENCIA_PARAM, row[EntidadUbicacionData.ENT_DIRECCION_CORRESPONDENCIA_FIELD]);
					SqlParameter param7 = new SqlParameter(ENT_SINO_TELEFONO_PARAM, row[EntidadUbicacionData.ENT_SINO_TELEFONO_FIELD]);
					SqlParameter param8 = new SqlParameter(ENT_TELEFONO_PARAM, row[EntidadUbicacionData.ENT_TELEFONO_FIELD]);
					SqlParameter param9 = new SqlParameter(ENT_SINO_FAX_PARAM, row[EntidadUbicacionData.ENT_SINO_FAX_FIELD]);
					SqlParameter param10 = new SqlParameter(ENT_FAX_PARAM, row[EntidadUbicacionData.ENT_FAX_FIELD]);
					SqlParameter param11 = new SqlParameter(ENT_APARTADO_AEREO_PARAM, row[EntidadUbicacionData.ENT_APARTADO_AEREO_FIELD]);
					SqlParameter param12 = new SqlParameter(ENT_SINO_CORREO_ELECTRONICO_ENTIDAD_PARAM, row[EntidadUbicacionData.ENT_SINO_CORREO_ELECTRONICO_ENTIDAD_FIELD]);
					SqlParameter param13 = new SqlParameter(ENT_CORREO_ELECTRONICO_ENTIDAD_PARAM, row[EntidadUbicacionData.ENT_CORREO_ELECTRONICO_ENTIDAD_FIELD]);
					SqlParameter param14 = new SqlParameter(ENT_PAGINA_WEB_PARAM, row[EntidadUbicacionData.ENT_PAGINA_WEB_FIELD]);
					SqlParameter param15 = new SqlParameter(ENT_CIUDAD_PARAM, row[EntidadUbicacionData.ENT_CIUDAD_FIELD]);

					SqlParameter[] parameters = {param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15};
					if (transaccion.Length == 0)
						SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ADICIONAR_ART_ENTIDAD_UBICACION", parameters);
					else
						SqlHelper.ExecuteNonQuery(transaccion[0], CommandType.StoredProcedure, "PAS_ADICIONAR_ART_ENTIDAD_UBICACION", parameters);

				}

			}
			catch (SqlException sqlEx)
			{
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "ART_ENTIDAD_UBICACION"), sqlEx);
			}
			catch (Exception ex)
			{
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", "ART_ENTIDAD_UBICACION"), ex);
			}

		}

		public void ActualizarEntidadUbicacion(EntidadUbicacionData datos, params SqlTransaction[] transaccion)
		{
			try
			{
				foreach (DataRow row in datos.Rows)
				{
					SqlParameter param1 = new SqlParameter(ENT_ID_PARAM, row[EntidadUbicacionData.ENT_ID_FIELD]);
					SqlParameter param2 = new SqlParameter(ZOP_ID_PARAM, row[EntidadUbicacionData.ZOP_ID_FIELD]);
					SqlParameter param3 = new SqlParameter(ZON_ID_PARAM, row[EntidadUbicacionData.ZON_ID_FIELD]);
					SqlParameter param4 = new SqlParameter("@ARE_ID", row[EntidadUbicacionData.ARE_ID_FIELD]);
					SqlParameter param5 = new SqlParameter(ENT_DIRECCION_PARAM, row[EntidadUbicacionData.ENT_DIRECCION_FIELD]);
					SqlParameter param6 = new SqlParameter(ENT_DIRECCION_CORRESPONDENCIA_PARAM, row[EntidadUbicacionData.ENT_DIRECCION_CORRESPONDENCIA_FIELD]);
					SqlParameter param7 = new SqlParameter(ENT_SINO_TELEFONO_PARAM, row[EntidadUbicacionData.ENT_SINO_TELEFONO_FIELD]);
					SqlParameter param8 = new SqlParameter(ENT_TELEFONO_PARAM, row[EntidadUbicacionData.ENT_TELEFONO_FIELD]);
					SqlParameter param9 = new SqlParameter(ENT_SINO_FAX_PARAM, row[EntidadUbicacionData.ENT_SINO_FAX_FIELD]);
					SqlParameter param10 = new SqlParameter(ENT_FAX_PARAM, row[EntidadUbicacionData.ENT_FAX_FIELD]);
					SqlParameter param11 = new SqlParameter(ENT_APARTADO_AEREO_PARAM, row[EntidadUbicacionData.ENT_APARTADO_AEREO_FIELD]);
					SqlParameter param12 = new SqlParameter(ENT_SINO_CORREO_ELECTRONICO_ENTIDAD_PARAM, row[EntidadUbicacionData.ENT_SINO_CORREO_ELECTRONICO_ENTIDAD_FIELD]);
					SqlParameter param13 = new SqlParameter(ENT_CORREO_ELECTRONICO_ENTIDAD_PARAM, row[EntidadUbicacionData.ENT_CORREO_ELECTRONICO_ENTIDAD_FIELD]);
					SqlParameter param14 = new SqlParameter(ENT_PAGINA_WEB_PARAM, row[EntidadUbicacionData.ENT_PAGINA_WEB_FIELD]);
					SqlParameter param15 = new SqlParameter(ENT_CIUDAD_PARAM, row[EntidadUbicacionData.ENT_CIUDAD_FIELD]);

					SqlParameter[] parameters = {param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15};

					if (transaccion.Length == 0)
						SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ACTUALIZAR_ART_ENTIDAD_UBICACION", parameters);
					else
						SqlHelper.ExecuteNonQuery(transaccion[0], CommandType.StoredProcedure, "PAS_ACTUALIZAR_ART_ENTIDAD_UBICACION", parameters);

				}
			}
			catch (SqlException sqlEx)
			{
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "ART_ENTIDAD_UBICACION"), sqlEx);
			}
			catch (Exception ex)
			{
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorActualizar", "ART_ENTIDAD_UBICACION"), ex);
			}

		}

		/// <summary>
		/// Elimina un registro de la entidad Artentidadubicacion
		/// </summary>
		public void EliminarEntidadUbicacion(decimal parENT_ID)
		{
			try
			{
				SqlParameter param1 = new SqlParameter(ENT_ID_PARAM, parENT_ID);

				SqlParameter[] parameters = {param1};
				SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_ENTIDAD_UBICACION", parameters);
			}
			catch (SqlException sqlEx)
			{
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "ART_ENTIDAD_UBICACION"), sqlEx);
			}
			catch (Exception ex)
			{
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorEliminar", "ART_ENTIDAD_UBICACION"), ex);
			}

		}

		public void EliminarEntidadUbicacion(ArrayList arrIDs)
		{
			SqlConnection objConnection = new SqlConnection(ConnectionString);
			objConnection.Open();
			SqlTransaction objTrans = objConnection.BeginTransaction();

			try
			{
				foreach (object Item in arrIDs)
				{
					SqlParameter param1 = new SqlParameter(ENT_ID_PARAM, decimal.Parse(Item.ToString()));
					SqlParameter[] parameters = {param1};
					SqlHelper.ExecuteNonQuery(objTrans, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_ENTIDAD_UBICACION", parameters);
				}
				objTrans.Commit();
			}
			catch (SqlException sqlEx)
			{
				objTrans.Rollback();
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "PAS_ELIMINAR_ART_ENTIDAD_UBICACION"), sqlEx);
			}
			catch (Exception ex)
			{
				objTrans.Rollback();
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorEliminar", "PAS_ELIMINAR_ART_ENTIDAD_UBICACION"), ex);
			}
			finally
			{
				objConnection.Close();
			}

		}


		/*
		public void CambiarEstado(string strIds, string strEstado)
		{
		
			try
			{	
				SqlParameter param1 = new SqlParameter(STR_ID_PARAM,strIds );
				SqlParameter param2 = new SqlParameter(CAMPO_ESTADO_PARAM,strEstado);
				SqlParameter[] parameters = {param1,param2};					
				SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_CAMBIAR_ESTADO_ART_ENTIDAD_UBICACION", parameters);
			}
			catch (SqlException sqlEx)
			{						 
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx,"ART_ENTIDAD_UBICACION"),sqlEx); 
			}
			catch (Exception ex)
			{				 
				if (strEstado.Equals(SinicConfigurationAdm.EstadoActivo))
				{
					throw new ApplicationExceptionManager (Utilidad.TraerMensaje("gmsgAprobarRegistrosExitoso", "ART_ENTIDAD_UBICACION")); 
				}
				else
				{
					throw new ApplicationExceptionManager (Utilidad.TraerMensaje("gmsgDesaprobarRegistrosExitoso", "ART_ENTIDAD_UBICACION")); 
				}
			}			
			
		}
		*/

	}
}